﻿/**
 *
 * @file OperAbstractPhysics.h
 * @brief 物理属性操作器抽象类声明
 * @author wangning (2185896382@qq.com)
 * @date 2024-12-10
 *
 */
#ifndef _OPER_PHYSICS__ABSTRACT_H___
#define _OPER_PHYSICS__ABSTRACT_H___

#include "FITK_Kernel/FITKCore/FITKActionOperator.h"
#include "FITK_Kernel/FITKCore/FITKOperatorRepo.h"
#include "OperatorsInterfaceAPI.h"

namespace EventOper
{
    /**
     * @brief 物理属性操作器抽象类
     * @author wangning (2185896382@qq.com)
     * @date 2024-12-10
     */
    class OperatorsInterfaceAPI OperAbstractPhysics : public Core::FITKActionOperator
    {
    public:
        /**
         * @brief Construct a new Oper Physics Property object
         * @author wangning (2185896382@qq.com)
         * @date 2024-12-10
         */
        explicit OperAbstractPhysics() = default;
        /**
         * @brief Destroy the Oper Abstract Physics Property object
         * @author wangning (2185896382@qq.com)
         * @date 2024-12-10
         */
        virtual ~OperAbstractPhysics() = 0;

        /**
        * @brief 创建物理属性
        * @author wangning (2185896382@qq.com)
        * @date 2024-12-10
        */
        virtual void createPhysicsProp();
        /**
         * @brief 复制物理属性
         * @param[i]  propID          物理属性id
         * @author wangning (2185896382@qq.com)
         * @date 2024-12-10
         */
        virtual void duplicatePhysicsProp(const int propID);
        /**
         * @brief 编辑物理属性
         * @param[i]  propID          物理属性id
         * @author wangning (2185896382@qq.com)
         * @date 2024-12-10
         */
        virtual void editPhysicsProp(const int propID);
        /**
         * @brief 删除物理属性
         * @param[i]  propID          物理属性id
         * @author wangning (2185896382@qq.com)
         * @date 2024-12-10
         */
        virtual void removePhysicsProp(const int propID);

        virtual void setAttribute(const QString &name, const QString& currentText, const int attrIndex, const QList<int> & matIDs);

    };
}


#endif